package com.bird.extension.generic;

import lombok.Data;

/**
 * @Author: sijunqiang
 * @Date: 2020/3/29 11:03
 * @Description: 定义一个一个类, 并给这个指定一个泛型
 * T--type 代表了类的泛型 通常放在类上面
 */
@Data
public class GenericClassExample<T> {

    //member的成员变量的类型是T, T的类型由外部指定是动态的
    private T member;

    //泛型的构造方法 形参member的类型为T,也是由外部指定
    public GenericClassExample(T member) {
        //给私有成员变量赋值
        this.member = member;
    }

    //定义一个泛型方法
    public T handleSomething(T target) {
        return target;
    }

    //定义一个普通方法
    public String sayHello(String name) {
        return "hello" + name;
    }

    //定义一个泛型数组 <T>代表泛型
    public static <E> void printArray(E[] inputArray) {
        for (E element : inputArray) {
            System.out.printf("%s", element);
            System.out.printf(" ");
        }
        System.out.println();
    }

}
